This is an R Markdown notebook.
Reading Data:
As we saw in the 10 Considerations for Data Analysis, the first step we’ll often want to consider is reading our data into R, so lets do that now!
cavity1 <- read_tsv(here("data","cavity_pt1.tsv"))
cavity2 <- read_tsv(here("data","cavity_pt2.tsv"))
desserts <- read_tsv(here("data","dessert.tsv"))
Let’s go ahead and have a quick look at some of the data we just loaded:
cavity1
cavity2
# print(cavity1)
# print(cavity2)
Append Data
It looks like cavity1 and cavity2 are incomplete, we’ll need to append those together to get the full set of cavity data:
cavities <- bind_rows(cavity1, cavity2)
print(cavities)
Clean Data
Hmm, Joanne has been duplicated in the dataset.. what are some ways that we can drop the duplicated record?
# We could use base R indexing like we learned in Day 1, and drop the 3rd row:
# cavities <- cavities[-3,]
# print(cavities)
# Alternatively, we can use a more tidyverse approach - you'll learn to develop your own preferences over time
cavities <- cavities %>%
distinct(.keep_all = TRUE)
print(cavities)
Great! That worked, now lets look at the last table we loaded named desserts:
print(desserts)
Merge Data
Now we can practice our hard-earned join skills by applying a full-join to keep all records from both complete tables:
adulting_is_hard <-
cavities %>%
full_join(desserts)
Joining, by = "Name"
print(adulting_is_hard)
Data Visualization
Finally, this wouldn’t be a proper R demonstration without some kind of fun visualization:

And if you want to start getting fancy, check out the plotly package in R!!
library(plotly)
cavity_year <- read_tsv(here("data", "cavities_yr.tsv")) %>%
left_join(adulting_is_hard) %>%
pivot_longer(2:11, names_to="Year")
cavity_fig <- cavity_year %>%
plot_ly(
x =~Name,
y= ~value,
frame= ~Year,
type="scatter",
mode="markers",
showlegend=F,
color = ~Name
)
cavity_fig
LS0tDQp0aXRsZTogIkRheSAzIERlbW86IFIgTm90ZWJvb2siDQphdXRob3I6IEJlbmphbWluIEhldG1hbg0KZGF0ZTogIjIwMjItMDItMDgiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMgVGhpcyBpcyBhbiBSIE1hcmtkb3duIG5vdGVib29rLiANCg0KIyMjIyBUaGVzZSBub3RlYm9va3MgYXJlIGFuIGV4Y2VsbGVudCBvcHRpb24gd2hlbiB5b3UncmUgdGVzdGluZyBvdXQgbmV3IGNvZGUgb3IgZGV2ZWxvcGluZyBhbiBhbmFseXNpcyBiZWNhc2UgdGhleSBtYWtlIGl0IHN1cGVyIGVhc3kgdG8gY2FwdHVyZSB5b3VyIHRob3VnaHQgcHJvY2VzcyBhbmQgaW50ZXJtZWRpYXRlIHJlc3VsdHMgYWxvbmcgdGhlIHdheS4gDQoNClRoZSBzYW1lIGNvbnZlbnRpb25zIGFwcGx5IGFzICptYXJrZG93biBkb2N1bWVudHMqIHRoYXQgeW91IHdvdWxkIGtuaXQgdG8gKnBkZiosICp3b3JkKiwgb3IgKnBvd2VycG9pbnQqLCBob3dldmVyIHRoZXNlIG5vdGVib29rcyBhcmUgaW50ZW5kZWQgbW9yZSBhcyBhICp3b3JrYm9vayBmb3JtYXQqIGFuZCBnaXZlIHlvdSBzb21lICoqZW5oYW5jZWQgZm9ybWF0dGluZyoqIHRvIGFsbG93IHlvdSB0byBmb2xsb3cgd2hhdCB5b3VyIGNvZGUgd2FzIGRvaW5nIGxhdGVyLiANCg0KUmVjYWxsOiByZWZlciB0byB0aGUgW1JNYXJrZG93biBDaGVhdHNoZWV0c10oaHR0cHM6Ly9yc3R1ZGlvLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNS8wMi9ybWFya2Rvd24tY2hlYXRzaGVldC5wZGYpIGZvciBNYXJrZG93biB0aXBzIGFuZCB0cmlja3MhIA0KDQo+IEVhY2ggdGltZSB5b3Ugc2F2ZSB0aGUgbm90ZWJvb2ssIFIgd2lsbCByZW5kZXIgaXQgYXMgYW4gKioqSFRNTCBmaWxlKioqIHRoYXQgeW91IGNhbiBvcGVuIGFuZCBicm93c2UgaW4geW91ciB3ZWIgYnJvd3Nlci4gT3IgeW91IGNhbiBjbGljayAqUFJFVklFVyogYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuIGFuZCB5b3UnbGwgc2VlIGEgcHJldmlldyBvZiB0aGUgbm90ZWJvb2sgaW4gdGhlIFJTdHVkaW8gVmlld2VyIHBhbmUuIA0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0KIyBSZWNhbGwgdGhhdCBiZWNhdXNlIHdlIHNldCBpbmNsdWRlPUZBTFNFIGFib3ZlLCB3ZSBjYW4gd3JpdGUgYW55dGhpbmcgd2Ugd2FudCBpbiB0aGlzIGJveCBhbmQgaXQgd29uJ3QgYmUgb3V0cHV0IHRvIHRoZSBmaW5hbCBkb2N1bWVudC4gDQojIFRoZSBjb2RlIGluIHRoZSBib3ggd2lsbCBzdGlsbCBydW4sIGhvd2V2ZXIuIA0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmhlcmU6OmlfYW0oIkRheTNfRGVtby5SbWQiKQ0KbGlicmFyeShoZXJlKQ0KDQpgYGANCg0KIyMgUmVhZGluZyBEYXRhOg0KQXMgd2Ugc2F3IGluIHRoZSAqKjEwIENvbnNpZGVyYXRpb25zIGZvciBEYXRhIEFuYWx5c2lzKiosIHRoZSBmaXJzdCBzdGVwIHdlJ2xsIG9mdGVuIHdhbnQgdG8gY29uc2lkZXIgaXMgcmVhZGluZyBvdXIgZGF0YSBpbnRvIFIsIHNvIGxldHMgZG8gdGhhdCBub3chIA0KDQpgYGB7ciByZWFkaW5nX2RhdGEsIG1lc3NhZ2U9RkFMU0V9DQpjYXZpdHkxIDwtIHJlYWRfdHN2KGhlcmUoImRhdGEiLCJjYXZpdHlfcHQxLnRzdiIpKQ0KY2F2aXR5MiA8LSByZWFkX3RzdihoZXJlKCJkYXRhIiwiY2F2aXR5X3B0Mi50c3YiKSkNCmRlc3NlcnRzIDwtIHJlYWRfdHN2KGhlcmUoImRhdGEiLCJkZXNzZXJ0LnRzdiIpKQ0KDQpgYGANCg0KTGV0J3MgZ28gYWhlYWQgYW5kIGhhdmUgYSBxdWljayBsb29rIGF0IHNvbWUgb2YgdGhlIGRhdGEgd2UganVzdCBsb2FkZWQ6DQpgYGB7cn0NCmNhdml0eTENCmNhdml0eTINCiMgcHJpbnQoY2F2aXR5MSkNCiMgcHJpbnQoY2F2aXR5MikNCmBgYA0KIyMgQXBwZW5kIERhdGENCkl0IGxvb2tzIGxpa2UgKipjYXZpdHkxKiogYW5kICoqY2F2aXR5MioqIGFyZSBpbmNvbXBsZXRlLCB3ZSdsbCBuZWVkIHRvIGFwcGVuZCB0aG9zZSB0b2dldGhlciB0byBnZXQgdGhlIGZ1bGwgc2V0IG9mIGNhdml0eSBkYXRhOg0KYGBge3J9DQpjYXZpdGllcyA8LSBiaW5kX3Jvd3MoY2F2aXR5MSwgY2F2aXR5MikNCnByaW50KGNhdml0aWVzKQ0KYGBgDQoNCg0KIyMgQ2xlYW4gRGF0YQ0KSG1tLCAqSm9hbm5lKiBoYXMgYmVlbiBkdXBsaWNhdGVkIGluIHRoZSBkYXRhc2V0Li4gd2hhdCBhcmUgc29tZSB3YXlzIHRoYXQgd2UgY2FuIGRyb3AgdGhlIGR1cGxpY2F0ZWQgcmVjb3JkPw0KDQpgYGB7cn0NCiMgV2UgY291bGQgdXNlIGJhc2UgUiBpbmRleGluZyBsaWtlIHdlIGxlYXJuZWQgaW4gRGF5IDEsIGFuZCBkcm9wIHRoZSAzcmQgcm93Og0KIyBjYXZpdGllcyA8LSBjYXZpdGllc1stMyxdDQojIHByaW50KGNhdml0aWVzKQ0KDQojIEFsdGVybmF0aXZlbHksIHdlIGNhbiB1c2UgYSBtb3JlIHRpZHl2ZXJzZSBhcHByb2FjaCAtIHlvdSdsbCBsZWFybiB0byBkZXZlbG9wIHlvdXIgb3duIHByZWZlcmVuY2VzIG92ZXIgdGltZQ0KY2F2aXRpZXMgPC0gY2F2aXRpZXMgJT4lDQogIGRpc3RpbmN0KC5rZWVwX2FsbCA9IFRSVUUpDQpwcmludChjYXZpdGllcykNCmBgYA0KR3JlYXQhIFRoYXQgd29ya2VkLCBub3cgbGV0cyBsb29rIGF0IHRoZSBsYXN0IHRhYmxlIHdlIGxvYWRlZCBuYW1lZCAqZGVzc2VydHMqOiANCmBgYHtyfQ0KcHJpbnQoZGVzc2VydHMpDQpgYGANCg0KIyMgTWVyZ2UgRGF0YQ0KTm93IHdlIGNhbiBwcmFjdGljZSBvdXIgaGFyZC1lYXJuZWQgKipqb2luKiogc2tpbGxzIGJ5IGFwcGx5aW5nIGEgKipmdWxsLWpvaW4qKiB0byBrZWVwIGFsbCByZWNvcmRzIGZyb20gYm90aCBjb21wbGV0ZSB0YWJsZXM6DQpgYGB7cn0NCmFkdWx0aW5nX2lzX2hhcmQgPC0gDQogIGNhdml0aWVzICU+JSANCiAgZnVsbF9qb2luKGRlc3NlcnRzKQ0KICANCnByaW50KGFkdWx0aW5nX2lzX2hhcmQpDQpgYGANCg0KIyMgRGF0YSBWaXN1YWxpemF0aW9uDQpGaW5hbGx5LCB0aGlzIHdvdWxkbid0IGJlIGEgcHJvcGVyIFIgZGVtb25zdHJhdGlvbiB3aXRob3V0IHNvbWUga2luZCBvZiAqKipmdW4gdmlzdWFsaXphdGlvbioqKjogDQpgYGB7ciBWaXN1YWxpemF0aW9uLCBlY2hvPUZBTFNFLCBmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD02fQ0KbGlicmFyeShnZ2ltYWdlKQ0KDQppbWFnZXMgPC0gYygiaW1hZ2VzL2ljZWRjb2ZmZWUucG5nIiwNCiAgICAgICAgICAgICJpbWFnZXMvY3JvaXNzYW50LnBuZyIsDQogICAgICAgICAgICAiaW1hZ2VzL3RpcmFtaXN1LnBuZyIsDQogICAgICAgICAgICAiaW1hZ2VzL2Nob2NvbGF0ZS5wbmciLA0KICAgICAgICAgICAgImltYWdlcy9jYXBwYWNpbm8ucG5nIiwNCiAgICAgICAgICAgICJpbWFnZXMvcGVhbnV0YnV0dGVyLnBuZyIsDQogICAgICAgICAgICAiaW1hZ2VzL2d1bW15YmVhci5wbmciLA0KICAgICAgICAgICAgImltYWdlcy9vcmFuZ2VfY2FrZS5wbmciDQogICAgICAgICAgICApDQoNCmFkdWx0aW5nX2lzX2hhcmQkaW1hZ2UgPC0gaW1hZ2VzDQoNCmdncGxvdChkYXRhID0gYWR1bHRpbmdfaXNfaGFyZCwgYWVzKHg9RGVzc2VydHMud2ssIHk9Q2F2aXRpZXMuMTB5cikpICsNCiAgZ2VvbV9pbWFnZShhZXMoaW1hZ2U9aW1hZ2UpLCBzaXplID0gMC4xKSArIA0KICBnZW9tX2xhYmVsKGFlcyhsYWJlbCA9IE5hbWUpLCBudWRnZV94ID0gMC41LCBudWRnZV95ID0gMC4yNSkgKyANCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgbGFicyh0aXRsZT0iTGV0IHRoZW0gZWF0IGNha2UhIiwNCiAgICAgICBzdWJ0aXRsZT0iKEJ1dCBhbHNvIGxldCdzIHByb21vdGUgZ29vZCBkZW50YWwgaHlnaWVuZSkiLA0KICAgICAgIHggPSAiQXZnIERlc3NlcnRzIHBlciBXZWVrIiwNCiAgICAgICB5ID0gIlRvdGFsICMgQ2F2aXRpZXMgaW4gMTAgeWVhciBwZXJpb2Q6IDIwMTAtMjAxOSIpDQoNCmBgYA0KDQpBbmQgaWYgeW91IHdhbnQgdG8gc3RhcnQgZ2V0dGluZyBmYW5jeSwgY2hlY2sgb3V0IHRoZSBbcGxvdGx5XShodHRwczovL3Bsb3RseS5jb20vci9hbmltYXRpb25zLyNmcmFtZXMpIHBhY2thZ2UgaW4gUiEhIA0KYGBge3IgcGxvdGx5LCBtZXNzYWdlPUZBTFNFfQ0KDQpsaWJyYXJ5KHBsb3RseSkNCg0KY2F2aXR5X3llYXIgPC0gcmVhZF90c3YoaGVyZSgiZGF0YSIsICJjYXZpdGllc195ci50c3YiKSkgJT4lIA0KICBsZWZ0X2pvaW4oYWR1bHRpbmdfaXNfaGFyZCkgJT4lIA0KICBwaXZvdF9sb25nZXIoMjoxMSwgbmFtZXNfdG89IlllYXIiKQ0KDQpjYXZpdHlfZmlnIDwtIGNhdml0eV95ZWFyICU+JSANCiAgcGxvdF9seSgNCiAgICB4ID1+TmFtZSwgDQogICAgeT0gfnZhbHVlLA0KICAgIGZyYW1lPSB+WWVhciwNCiAgICB0eXBlPSJzY2F0dGVyIiwgDQogICAgbW9kZT0ibWFya2VycyIsDQogICAgc2hvd2xlZ2VuZD1GLA0KICAgIGNvbG9yID0gfk5hbWUNCiAgICApDQoNCmNhdml0eV9maWcNCmBgYA0KDQoNCg==